﻿using System.IO;
using System.Windows.Forms;

namespace Kyoh.Lib.WinForms
{
    /// <summary>デザイナなどにおけるディレクトリパスのエディタを提供します。</summary>
    public partial class DirectoryPathEditor : PathEditor
    {
        /// <summary><see cref="DirectoryPathEditor" /> クラスの新しいインスタンスを初期化します。</summary>
        public DirectoryPathEditor()
        {
            InitializeComponent();
        }

        /// <summary>パスが妥当な値であるかどうか検証します。</summary>
        /// <param name="path">検証対象のパス文字列。</param>
        /// <returns>パスの妥当性を表す <see cref="PathEditor.PathValidation"/> 値。</returns>
        protected override PathEditor.PathValidation CheckPath(string path)
        {
            if (string.IsNullOrEmpty(path))
                return PathValidation.Empty;
            else if (Directory.Exists(path))
                return PathValidation.Valid;
            else
                return PathValidation.Invalid;
        }

        /// <summary>パスの選択画面を表示して、ユーザからパスの入力を受け取ります。</summary>
        /// <returns>ユーザの入力したパス。</returns>
        protected override string SelectPath()
        {
            this.folderBrowserDialog1.SelectedPath = this.Path;
            if (this.folderBrowserDialog1.ShowDialog() == DialogResult.OK)
                return this.folderBrowserDialog1.SelectedPath;
            else
                return base.SelectPath();
        }
    }
}
